// RAP [rh] Field assist package disabled as it is partially deprecated and requires key strokes ///******************************************************************************* // * Copyright (c) 2006, 2007 IBM Corporation and others. // * All rights reserved. This program and the accompanying materials // * are made available under the terms of the Eclipse Public License v1.0 // * which accompanies this distribution, and is available at // * http://www.eclipse.org/legal/epl-v10.html // * // * Contributors: // * IBM Corporation - initial API and implementation // *******************************************************************************/ // //package org.eclipse.ui.fieldassist; // //import org.eclipse.core.commands.AbstractHandler; //import org.eclipse.core.commands.ExecutionEvent; //import org.eclipse.core.commands.IHandler; //import org.eclipse.jface.fieldassist.ContentProposalAdapter; //import org.eclipse.jface.fieldassist.ControlDecoration; //import org.eclipse.jface.fieldassist.FieldDecoration; //import org.eclipse.jface.fieldassist.FieldDecorationRegistry; //import org.eclipse.jface.fieldassist.IContentProposalProvider; //import org.eclipse.jface.fieldassist.IControlContentAdapter; //import org.eclipse.osgi.util.NLS; //import org.eclipse.swt.SWT; //import org.eclipse.swt.events.DisposeEvent; //import org.eclipse.swt.events.DisposeListener; //import org.eclipse.swt.events.FocusEvent; //import org.eclipse.swt.events.FocusListener; //import org.eclipse.swt.widgets.Control; //import org.eclipse.ui.PlatformUI; //import org.eclipse.ui.handlers.IHandlerActivation; //import org.eclipse.ui.handlers.IHandlerService; //import org.eclipse.ui.internal.WorkbenchMessages; //import org.eclipse.ui.keys.IBindingService; // ///** // * ContentAssistCommandAdapter extends {@link ContentProposalAdapter} to invoke // * content proposals using a specified {@link org.eclipse.ui.commands.ICommand}. // * The ability to specify a {@link org.eclipse.jface.bindings.keys.KeyStroke} // * that explicitly invokes content proposals is hidden by this class, and // * instead the String id of a command is used. If no command id is specified by // * the client, then the default workbench content assist command is used. // * <p> // * As of 3.3, ContentAssistCommandAdapter can be optionally configured to // * install the content assist decoration on its control. // * <p> // * This class is not intended to be subclassed. // * // * @since 3.2 // */ //public class ContentAssistCommandAdapter extends ContentProposalAdapter { // // private static final String CONTENT_ASSIST_DECORATION_ID = "org.eclipse.ui.fieldAssist.ContentAssistField"; //$NON-NLS-1$ // private String commandId; // // /** // * The command id used for content assist. (value // * <code>"org.eclipse.ui.edit.text.contentAssist.proposals"</code>) // */ // public static final String CONTENT_PROPOSAL_COMMAND = "org.eclipse.ui.edit.text.contentAssist.proposals"; //$NON-NLS-1$ // // // Default autoactivation delay in milliseconds // // TODO: This should eventually be controlled by // // a platform UI preference. // private static final int DEFAULT_AUTO_ACTIVATION_DELAY = 500; // // private IHandlerService handlerService; // // private IHandlerActivation activeHandler; // // private IHandler proposalHandler = new AbstractHandler() { // public Object execute(ExecutionEvent event) { // openProposalPopup(); // return null; // } // // }; // private ControlDecoration decoration; // // /** // * Construct a content proposal adapter that can assist the user with // * choosing content for the field. No visual indicator of content assist is // * shown. // * // * @param control // * the control for which the adapter is providing content assist. // * May not be <code>null</code>. // * @param controlContentAdapter // * the <code>IControlContentAdapter</code> used to obtain and // * update the control's contents as proposals are accepted. May // * not be <code>null</code>. // * @param proposalProvider // * the <code>IContentProposalProvider</code> used to obtain // * content proposals for this control, or <code>null</code> if // * no content proposal is available. // * @param commandId // * the String id of the command that will invoke the content // * assistant. If not supplied, the default value will be // * "org.eclipse.ui.edit.text.contentAssist.proposals". // * @param autoActivationCharacters // * An array of characters that trigger auto-activation of content // * proposal. If specified, these characters will trigger // * auto-activation of the proposal popup, regardless of the // * specified command id. // */ // public ContentAssistCommandAdapter(Control control, // IControlContentAdapter controlContentAdapter, // IContentProposalProvider proposalProvider, String commandId, // char[] autoActivationCharacters) { // this(control, controlContentAdapter, proposalProvider, commandId, // autoActivationCharacters, false); // } // // /** // * Construct a content proposal adapter that can assist the user with // * choosing content for the field. // * // * @param control // * the control for which the adapter is providing content assist. // * May not be <code>null</code>. // * @param controlContentAdapter // * the <code>IControlContentAdapter</code> used to obtain and // * update the control's contents as proposals are accepted. May // * not be <code>null</code>. // * @param proposalProvider // * the <code>IContentProposalProvider</code> used to obtain // * content proposals for this control, or <code>null</code> if // * no content proposal is available. // * @param commandId // * the String id of the command that will invoke the content // * assistant. If not supplied, the default value will be // * "org.eclipse.ui.edit.text.contentAssist.proposals". // * @param autoActivationCharacters // * An array of characters that trigger auto-activation of content // * proposal. If specified, these characters will trigger // * auto-activation of the proposal popup, regardless of the // * specified command id. // * @param installDecoration // * A boolean that specifies whether a content assist control // * decoration should be installed. The client is responsible for // * ensuring that adequate space is reserved for the decoration. // * Clients that want more fine-grained control of the // * decoration's location or appearance should use // * <code>false</code> for this parameter, creating their own // * {@link ControlDecoration} and managing it directly. // * @since 3.3 // */ // public ContentAssistCommandAdapter(Control control, // IControlContentAdapter controlContentAdapter, // IContentProposalProvider proposalProvider, String commandId, // char[] autoActivationCharacters, boolean installDecoration) { // super(control, controlContentAdapter, proposalProvider, null, // autoActivationCharacters); // this.commandId = commandId; // if (commandId == null) { // this.commandId = CONTENT_PROPOSAL_COMMAND; // } // // // If no autoactivation characters were specified, set them to the empty // // array so that we don't get the alphanumeric auto-trigger of our // // superclass. // if (autoActivationCharacters == null) { // this.setAutoActivationCharacters(new char[] {}); // } // // Set a default autoactivation delay. // setAutoActivationDelay(DEFAULT_AUTO_ACTIVATION_DELAY); // // // Add listeners to the control to manage activation of the handler // addListeners(control); // // // Cache the handler service so we don't have to retrieve it each time // this.handlerService = (IHandlerService) PlatformUI.getWorkbench() // .getService(IHandlerService.class); // if (installDecoration) { // // Note top left is used for compatibility with 3.2, although // // this may change to center alignment in the future. // decoration = new ControlDecoration(control, SWT.TOP | SWT.LEFT); // decoration.setShowOnlyOnFocus(true); // FieldDecoration dec = getContentAssistFieldDecoration(); // decoration.setImage(dec.getImage()); // decoration.setDescriptionText(dec.getDescription()); // } // // } // // /* // * Add the listeners needed in order to activate the content assist command // * on the control. // */ // private void addListeners(Control control) { // control.addFocusListener(new FocusListener() { // public void focusLost(FocusEvent e) { // if (activeHandler != null) { // handlerService.deactivateHandler(activeHandler); // activeHandler = null; // } // } // // public void focusGained(FocusEvent e) { // if (isEnabled()) { // if (activeHandler == null) { // activeHandler = handlerService.activateHandler( // commandId, proposalHandler); // } // } else { // if (activeHandler != null) { // handlerService.deactivateHandler(activeHandler); // } // activeHandler = null; // } // } // }); // control.addDisposeListener(new DisposeListener() { // public void widgetDisposed(DisposeEvent e) { // if (activeHandler != null) { // handlerService.deactivateHandler(activeHandler); // activeHandler = null; // } // // } // }); // } // // /** // * Return the string command ID of the command used to invoke content // * assist. // * // * @return the command ID of the command that invokes content assist. // */ // public String getCommandId() { // return commandId; // } // // /* // * Return the field decoration that should be used to indicate that content // * assist is available for a field. Ensure that the decoration text includes // * the correct key binding. // * // * @return the {@link FieldDecoration} that should be used to show content // * assist. // * // * @since 3.3 // */ // private FieldDecoration getContentAssistFieldDecoration() { // FieldDecorationRegistry registry = FieldDecorationRegistry.getDefault(); // // Look for a decoration installed for this particular command id. // String decId = CONTENT_ASSIST_DECORATION_ID + getCommandId(); // FieldDecoration dec = registry.getFieldDecoration(decId); // // // If there is not one, base ours on the standard JFace one. // if (dec == null) { // FieldDecoration originalDec = registry // .getFieldDecoration(FieldDecorationRegistry.DEC_CONTENT_PROPOSAL); // // registry.registerFieldDecoration(decId, null, originalDec // .getImage()); // dec = registry.getFieldDecoration(decId); // } // // Always update the decoration text since the key binding may // // have changed since it was last retrieved. // IBindingService bindingService = (IBindingService) PlatformUI // .getWorkbench().getService(IBindingService.class); // dec // .setDescription(NLS // .bind( // WorkbenchMessages.get().ContentAssist_Cue_Description_Key, // bindingService // .getBestActiveBindingFormattedFor(getCommandId()))); // // // Now return the field decoration // return dec; // } // // /* // * (non-Javadoc) // * // * Overridden to hide and show the content assist decoration // * // * @see org.eclipse.jface.fieldassist.ContentProposalAdapter#setEnabled(boolean) // * @since 3.3 // */ // public void setEnabled(boolean enabled) { // super.setEnabled(enabled); // if (decoration == null) { // return; // } // if (enabled) { // decoration.show(); // } else { // decoration.hide(); // } // } //}